Computer systems generally comprise physical devices including a processing unit, a memory device, a monitor and input-output devices such as a keyboard and a mouse. More complex computer systems include a number of processing units, memory devices and input-output devices arranged in a network.
A common network arrangement is where stand-alone computers, such as IBM compatible personal computers, each having a processing unit, local memory devices and a monitor, are coupled together. A central processor (called a server) can be used to coordinate the flow of information between the networked computers. A typical network may also include one or more central memory devices that can be shared by the users of the networked computers. Another common network arrangement is where. `dumb` terminals are connected to a central processor. In this arrangement, the central processor does all the processing and is shared by each user.
Computer systems are utilized by users to perform specific tasks or to solve specific problems. Typically, a computer processor is programmed to perform these tasks or solve these problems. Such a program is referred to as an application program. The application program may be stored on a local memory device or on a central memory device. Application programs, as well as carrying out the programmed function of the application, also provide the user with an interface to enable the user of the application program to communicate with the program. The interface of an application program allows a user to give commands to execute the program's instructions (for example, to underline a word when using a word processor application program or to plot a graph when using a spreadsheet program) and to interact with the computer system's operating system (for example, to retrieve a file from a memory).
Thus, application programs run in conjunction with the computer system's operating system. The operating system is a program to control the operation of the computer's physical devices. Each individual processor has an operating system. The operating system, for example, determines where in memory a piece of information is to be stored, coordinates the sending of information to a printer to be printed, and commences the operation of an application program. Operating systems also provide the user with an interface to communicate with the operating system. Commonly, the operating system's interface is a command line on the computer's monitor where the user can enter an instruction from the operating system's instruction set.
When networked, the operating system of the central processor (called the network operating system or NOS) determines how each processor and the physical devices comprising the network interact. For example, the operating system may allow a user to retrieve information saved by another user on a central memory device, or it may allow a user to save a document to a central memory device so that other users can read it but not alter it. Each network processor may also have its own operating system (such as, for example a disk operating system)to interface with the network and to control non-networked operations. A common disk operating system for personal computers is the MS-DOS operating system (Microsoft Disk Operating System).
The instruction set of an operating system usually contains simple instructions to manipulate memory, share application programs and files, control peripheral devices and run applications programs. For example, operating systems often have instructions that allow the user to do such things as display the contents of a memory device on a computer screen, delete items of information from a memory device, place items of information in a memory device, organize the information stored in a memory device into simple structures such as hierarchical directories, run application programs and have information printed.
Users often find such operating systems difficult to use. The types of commands available are few and unsophisticated. Commands are often abbreviated words, making it difficult for users to remember what a command does and when to use it. Additionally, the user has limited methods to store and structure the user's information in the memory devices and limited ways of identifying (or naming) such information. The methods used to store the information are often not user friendly and the data structures in which the information is stored are difficult to manipulate.
The user's information, stored in the various memory devices in the network, is often represented by less than meaningful names identifying that information. For example, in the MS-DOS operating system a user's information is stored as a file of information, and that file is identified by a letter representative of a memory device, then a colon, followed by a backslash, then a string of up to eight characters, a period and three characters representing the type of information stored. A typical file identifier in the MS-DOS operating system would thus be "C: Leonlet.doc", where the first part of the file name is a letter representing the storage device where the document is stored, the second part is an identifier selected by the user and the third part of the file name identifies the type of file and is generally determined by the operating system or application program. In the example above, the third part of the file name identifies the file as a word processing document.
When using such cryptic file identifiers, many users find it difficult to remember in which file a particular piece of information is stored. The file identifier gives little information to the user about the kind of information stored in the file. Further, the `dot convention` used in identifying MS-DOS operating system files is unfamiliar to most users, who do not understand what each suffix in the file identifier means. Others operating systems have equally cryptic file naming conventions.
A further problem user's find when interfacing with an operating system is the way the operating system allows the user to structure stored information. To enable a user to retrieve a file from memory and to provide additional information about the contents of a file (apart from the information given by the file name), operating systems often allow a user to structure the way the files are stored. It is common to provide users with the ability to create directories and subdirectories so that files of information can be grouped in storage with related information. It is also common to allow users to save files of information in various memory devices and specify who may access those documents.
For example, a user may decide that a directory called "customer" and another directory called "vendors" is desirable. The user can create those directories and then "put" files in those directories. By "putting" a file in a directory, the user is in effect enlarging the filename for the file. For example, in the MS-DOS operating system, the identifier for a file called "address.wrd" stored in the "vendors" directory would be "c: vendors address.wrd." The "c" at the beginning of the file name specifies in which storage device the file is stored. If subdirectories are used, the file name is even more complex. Although providing the user with more information about a file (i.e. that the addresses filed stores the addresses of the user's vendors), the notation used is difficult for inexperienced users to understand. When identifying a file, the user must generally give the full name of the file, thus requiring the user to remember in which storage device, directory and subdirectory the file is placed. However, when many files have been stored, each with such a cryptic name, it is difficult to locate the desired file and to determine the contents of the various files.
Further, users are given no help in determining what directories and subdirectories are needed, in creating the directories structure and in deciding which files should be placed in which subdirectory and on which storage device. Many users, finding the process of creating directories and placing files in directories too complex, do not bother to use the operating system's directory features. Accessing and creating different directories and subdirectories is clumsy, using meaningless commands such as "cd..". When a list of files is displayed, all files are displayed at the one level. The hierarchical directory structure is not explicit in such a listing of files. The notation used in the directory structure, moreover, consists of a series of directory names and file identifiers joined by "/" and ":" characters. Such notation does not relate to the user's real world environment.
When storing files on common memory devices both the user and the systems administrator need to have the ability to specify rights users can have with respect to files stored within the network. Examples of rights a user can have include read rights, modify rights and erase rights. (This feature is often accomplished by a separate program, executed on the server, called hereafter an access program.) When using operating systems such as the MS-DOS operating system, this feature is not directly available to users. With more sophisticated operating systems or communication servers, separate tools are used to specify user rights from those used to save files within, and specify, the disk and directory structure. These server programs are difficult to operate, are not logically connected to the saving mechanism, and cannot be utilized while inside an applications program. Heretofore known computer systems have not included an integrated interface that allows users to set user rights for others on the network at the same time as saving a file using a file structure generator, and without leaving the applications program.
To overcome the problem that inexperienced users find when communicating with an operating system program, other programs have been written to provide an easier user interface that performs operating systems functions. The most successful of these advanced operating systems is Microsoft's Windows brand program that provides a graphical user interface for the MS-DOS operating system. Windows is a shell program that converts the MS-DOS operating system environment into a graphical environment. Functions such as "save," "copy," "create directory," "run a program," and the like are simplified by giving the user a graphical interface which the user can operate by means of a cursor on the monitor moved by a physical device such as a mouse. The user's commands from the graphical interface are converted into MS-DOS operating system commands by the Windows program. The program is easy to learn and simple to use. The user needs no knowledge of the difficult MS-DOS operating system conventions and commands. A further advantage of the Windows system is that it offers a standard interface that can be used by various application programs. Application programs can be written to take advantage of the Windows program so that the user sees and operates the same Windows graphical interface for each application program used. In that way, the user can use one series of "graphical commands" for both the operating system and all application programs. The user does not need to learn difficult MS-DOS operating system command abbreviations because all possible commands are displayed in natural language in the menu. The same operating system functions can be accessed from various application programs using the same method.
However, software utilizing the Windows program or other graphical user interfaces are limited by the underlying operating system. For example, the Windows program operating under the MS-DOS operating system is limited by certain characteristics of the MS-DOS operating system. Even though file manipulation functions such as "new," "open," "close," "save" and "save as" are presented to the user in a graphical way, the file identifiers used in conjunction with these commands are still the dot notation identifiers of the MS-DOS operating system. The Windows program graphical user interface makes it easier for the user to activate file manipulation commands, but the names used to identify the files are still those that are used by the MS-DOS operating system.
For example, when the user selects the "open" command from the Windows program, a box appears on the screen listing a mixture of MS-DOS operating system files and directories in no particular order or structure. The user is able to open one of these files by placing the cursor on the file name and activating a button on the mouse. The directory structure is not graphically displayed on the screen. The listing just shows a mixture of directories and files, not giving any information about the contents of these directories or files apart from that of the cryptic MS-DOS operating system file identifier. It is not apparent to the user that networked storage devices may be available.
Even though the graphical user interface of the Windows program is based on the principle that commands should be based on actions manipulating graphical worldly metaphors rather than entering cryptic commands, the file names and retrieval operations presented to the user do not create an environment molded to match the user's physical world.
The Windows program does not provide an easy to use tool to create a meaningful real world based file storage structure. For example, a user who wishes to save a document in a file is given no help as to how to name the file, is limited as to the format of the file's name, and is not encouraged to place the file in a relevant directory on the relevant storage device. More troublesome, the user cannot create a directory using the Windows program from an application program, as explained below. Further, properly arranging the secondary memory into a meaningful directory structure using the file manager programs currently provided by operating systems, such as the MS Windows File Manager program, is a lengthy manual process which requires a good operating knowledge of the operating system. This presents a difficult and challenging task for a novice user. Most users will end up working with a disorganized data and file structure.
The user is also unable to use the Windows program's graphical user interface to specify which users on a network have access to the information saved and what that access will be.
The above problems lead to nonefficient management of secondary memory, creating serious difficulties for the user in retrieving and storing files. As more and more files are stored on the network, memory becomes cluttered with unrecognizable documents and misleading file directories. Extensive (and expensive) disk space will be occupied by files that the user does not know the contents or relevance of, and which may be obsolete, reducing the efficient use of the computer as a file storage device.
When a user is operating the computer from the operating system level, a common requirement is to locate a file of data, open that file and operate upon it using an application program. Interfaces such as those of the MS-DOS operating system and the Windows program do not help users find the required file. All that is provided to the user is a list of almost meaningless file names. The contents of each file is a mystery to the user until the file is opened. Thus, to locate a relevant file, the user must remember on which device to look, examine a list of meaningless file names, and open each file in conjunction with the respective application program until the right file is located. When many files are involved, this is a time consuming process. No information, apart from the file name, length of the file and date of first creation is presented to the user about a file when examining the contents of a memory device.
A further problem encountered by users is using an operating system's file management techniques from inside an application program. Once the application program is in use, manipulation of the file structure is very difficult. Even sophisticated graphical user interface programs operating in conjunction with application programs do not allow users to create directories and delete groups of files or directories while inside the application program. For example, if a user is using a word processing program and decides to save the document but the directory the user wishes to save the document in has not been created, the user is unable to both create a new directory and save the document without leaving the word processing application program. In addition, if the user wishes to delete a directory and all the files of information stored within that directory, the user must delete each file individually and then leave the application program to delete the directory.
Computer systems sometimes allow users to access additional information about a file from a database that is unrelated to the file retrieval tool. The user can search the database for information about a file and then use the information from the database to retrieve the desired file. In such systems, the structure of the database does not reflect the storage structure of the information in the network. In addition, only one database is used on the network, containing information about all files, no matter which user created or stored the file. A user will mostly wish to search for files they created. Searching such a large database, where only a part is relevant to any one user, is a time consuming process.